n,m = map(int,input().split())
ans = 0
a = 0
while a*a <=n and a<=m:
b = n - a*a
if (a+b*b==m):
ans += 1
a += 1
print(ans)
#include <stdio.h>
int main()
{
int m, n,count=0;
scanf("%d %d", &m, &n);
for(int i=0;i<=m;i++)
{
for(int j=0;j<=n;j++)
{
if(i*i+j==m && i+j*j==n)
{
count++;
}
}
}
printf("%d", count);
}
1698A - XOR Mixup | 1702E - Split Into Two Sets |
1703B - ICPC Balloons | 1702F - Equate Multisets |
1700A - Optimal Path | 665C - Simple Strings |
1708A - Difference Operations | 1703E - Mirror Grid |
1042A - Benches | 1676B - Equal Candies |
1705B - Mark the Dust Sweeper | 1711A - Perfect Permutation |
1701B - Permutation | 1692A - Marathon |
1066A - Vova and Train | 169B - Replacing Digits |
171D - Broken checker | 380C - Sereja and Brackets |
1281B - Azamon Web Services | 1702A - Round Down the Price |
1681C - Double Sort | 12A - Super Agent |
1709A - Three Doors | 1680C - Binary String |
1684B - Z mod X = C | 1003A - Polycarp's Pockets |
1691B - Shoe Shuffling | 1706A - Another String Minimization Problem |
1695B - Circle Game | 1702B - Polycarp Writes a String from Memory |